SVD、PCA、LDA、LSA、PLSA、LDA

PCA

PCA有两种通俗易懂的解释,1)是最大化投影后数据的方差(让数据更分散);2)是最小化投影造成的损失。这两个思路最后都能推导出同样的结果。

其方法主要是通过对协方差矩阵进行特征分解[2],以得出数据的主成分(即特征向量)与它们的权值(即特征值[3])。PCA是最简单的以特征量分析多元统计分布的方法。其结果可以理解为对原数据中的方差做出解释:哪一个方向上的数据值对方差的影响最大?换而言之,PCA提供了一种降低数据维度的有效办法;如果分析者在原数据中除掉最小的特征值所对应的成分,那么所得的低维度数据必定是最优化的(也即,这样降低维度必定是失去讯息最少的方法)。主成分分析在分析复杂数据时尤为有用,比如人脸识别。

PCA和SVD的关系?一个根据covariave。一个是特征值。有什么联系。

LDA不记得了。

图片来自 https://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca

PCA与FA

因子分析(FA)与主成分分析(PCA)的区别
(1)主成分分析是将主要成分表示为原始观察变量的线性组合,而因子分析是将原始观察变量表示为新因子的线性组合,原始观察变量在两种情况下所处的位置不同。

PCA与SVD

简介

Matrix Factorization
SVD

u =

-0.825066 -0.047735 -0.563016
-0.443084 -0.563669 0.697104
-0.350631 0.824620 0.443914

s =

Diagonal Matrix

9.2654 0 0

0   3.2340        0

0        0   1.3016

v =

-0.636527 -0.770982 -0.020485
-0.476317 0.372083 0.796666
-0.606593 0.516857 -0.604073

U V有个特性,每行,每列的平方和都等于1.

Matrix Factorization
应该是,Diagonal Matrix中比较大的值,对应的U,V相应的行列,影响权值越大。
特征值分解必须针对方阵,即只有方阵才有特征值,这也是特征值分解的一个局限

Q是矩阵A的特征向量组成的矩阵,Q不唯一
一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换

奇异值分解
在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了

一个很好的tutorial

fed

实质是降维
对矩阵X和V的理解,X是latent vector representations ,V是词典,也就是latent space的坐标系。当然也可以U作为表达,sigma*V作为词典

我的实验
要解决的问题:
对1000个样本进行降维,我们可以采用SVD分解。如果又来了一个新样本,如何获得这个样本的降维表示?
方法一:与原始样本组成1001的矩阵,然后整体矩阵进行SVD分解(计算复杂度较高)。因此我们提出一下问题

SVD分解是否对新增样本具有不变性,包括1.降维表达不变性;2.词典不变性???
对 100030的矩阵进行svd分解,并降维到100020。
100030=【100020】【2020】【2030】=【100020】【20*30】 ,这里第一项是降维表示,第二项是词典

新增一个样本,变为100130,对其SVD分解,U,S,V 与原始的USV几乎不变,只是增加了相应的行和列。这就寻找到了一个不变的量。
然后具体如何获得一个新样本的降维表示呢?
1
30=【120】【20*30】
Ax=Y,超定方程组,一般无解,只能求近似解
类似超定方程求解,以下程序的方法不一定很好 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---------------------------------------------------------------
clear,clc
a=rand(100,1); %a作为训练集
[U,S,V]=svd(a);
a20=U*S(:,1:20)*(V(1:20,:))'; %降维到20维后的重建
error=sum(sum(abs(a-a20)));
aplus=[a;rand(1,30)];

%方法一:
[U1,S1,V1]=svd(aplus); % 对所有样本进行SVD分解
P1=U1(101,:)*S1(:,1:20); % 新样本降到20维后的表示

%方法二:利用求解超定方程组的方法
P2=inv(V'*V)*V'*aa' %利用训练集得到的词典,求得的新样本表示
P3=inv(V1'*V1)*V1'*aa' %利用所有样本降维后的词典,求得的新样本表示
-------------------------------------------------------------------
P1=P3。说明这个方法很好,也就是把超定方程组化为普通方程组。这个方法有点类似

疑问

对于稀疏矩阵,降维策略可以有哪些优化?

参考